Source code is ubiquitous and a great deal of human effort goes into developing it. Developers typically have years of training and experience before they are able to write source code which can be used for the required tasks and which is error free. However, existing systems for automatically generating source code are very limited in terms of the quality of the source code they produce.
Detecting errors in source code and correcting them is typically an ongoing, time consuming process that is not straightforward. Various debugging tools are available to developers but these can be difficult to use especially for novices. Methods for automatically verifying source code are beginning to become available. However, these do not necessarily correct errors in source code or help developers to generate the source code in the first place.
The embodiments described below are not limited to implementations which solve any or all of the disadvantages of known systems for source code generation, or completion or checking or correction.